草庐IT

c++ - unique_ptr VS auto_ptr

全部标签

c++ - C/C++ 中的领域特定语言,这是 Kosher 吗?

当我想出这个“奇怪”的解决方案时,我只是在为C/C++中的新项目设计一些领域特定语言设计:defineDSL(...)MakeCommand(#__VA_ARGS__\)->Exec()->GetResults()MyResultsresults=DSL(forpinpeopledosomething);好的部分是这是符合标准的(但DuffSwitch也是如此),并且跨平台、可移植等……然而,这种方法实际上并不比将字符串写入代码更好,但是由于DSL引擎无论如何都会解析字符串,这样看起来更漂亮,并且减少了困惑。但想知道其他人对此有何看法。谢谢 最佳答案

c# - 如何在控制台应用程序中生成彩色 GUI?

对于以下问题,答案可能针对C/C++、C#或Python。如果可能的话,我希望答案是跨平台的,但我意识到我可能需要conio或ncurses如何输出彩色文本?我如何做一个像top或nethack这样的GUI,其中某些东西被“绘制”到终端的某些空间?如果可能的话,一个小的单行代码示例会很棒。 最佳答案 是的,这些是VT100转义码。最简单的事情是使用一些Curses的味道。有一次,您选择了一种curses风格,同时执行1和2非常简单。这是关于ncurses的方法。http://web.cs.mun.ca/~rod/ncurses/nc

c++ - 从同一个指针构造两个 shared_ptr 对象

我有一个来自“C++标准库扩展”的问题:Exercise6IsaidinSection2.4.2thatyoushouldn'tconstructtwoshared_ptrobjectsfromthesamepointer.Thedangeristhatbothshared_ptrobjectsortheirprogenywilleventuallytrytodeletetheresource,andthatusuallyleadstotrouble.Infact,youcandothisifyou'recareful.It'snotparticularlyuseful,butwrit

c++ - BSD 套接字问题 : inet_ntop returning "0.0.0.0"

我正在尝试获取我绑定(bind)的正在监听的套接字的机器的IP。打印的端口号工作正常,但地址是“0.0.0.0”。这是相关的代码。在获取此代码之前,res已传递给getaddrinfo和getsockname。charip[INET_ADDRSTRLEN];structsockaddr_in*ipv4=(structsockaddr_in*)res->ai_addr;void*addr=&(ipv4->sin_addr);inet_ntop(res->ai_family,addr,ip,sizeofip);std::coutsin_port有什么问题吗? 最

c++ - 是否有用于 C 和/或 C++ 的数据库访问库,其接口(interface)与 Perl 的 DBI 类似?

我愿意写Perl的一个子集DBIC++中libodbc(或unixODBC)的接口(interface)。我相信这样做会让我更好地专注于我的目标。顺便说一句,如果已经有类似的东西,我宁愿避免重新发明轮子。 最佳答案 NVM,没有odbc接口(interface),但它类似于DBI(因为DBI除了在DBD::ODBC中不使用odbc)libdbi-http://libdbi.sourceforge.net/libdbiimplementsadatabase-independentabstractionlayerinC,similart

c++ - 我如何解决 GetParent/EnumChildWindows 不对称问题?

我最近用Microsoft的Spy++检查了一个GUI,发现了一个奇怪的结构;它看起来像这样(警告,前面的ASCII艺术):|+002004D6"MyRootWindow1"FooClassName|||+001F052C"MyChildWindow"ClassOfChildWindow|\001D0A8C"MyRootWindow2"SomeOtherClassNameTherearetworootwindows,002004D6and001D0A8c,theformeroneofwhichhasonechildwindow,001F052C.Now,thiswouldbeallgo

c++ - 发布 boost::ptr_vector,不匹配文档

我正在使用boost1.37,我正在尝试使用boost::ptr_vector,并转移它的所有权,以便我可以从函数中返回它。查看boost文档(http://www.boost.org/doc/libs/1_36_0/libs/ptr_container/doc/tutorial.html#new-functions)std::auto_ptr>get_zoo(){boost::ptr_dequeresult;...returnresult.release();//giveupownership}...boost::ptr_dequeanimals=get_zoo();我试过:#inc

c++ - C/C++ : Bitwise operators on dynamically allocated memory

在C/C++中,是否有一种简单的方法可以将按位运算符(特别是左移/右移)应用于动态分配的内存?例如,假设我这样做了:unsignedchar*bytes=newunsignedchar[3];bytes[0]=1;bytes[1]=1;bytes[2]=1;我想要一种方法来做到这一点:bytes>>=2;(那么“字节”将具有以下值):bytes[0]==0bytes[1]==64bytes[2]==64为什么值应该是这样的:分配后,字节如下所示:[00000001][00000001][00000001]但我希望将字节视为一长串位,如下所示:[000000010000000100000

c++ - select() 是否可以实现单套接字读/写超时?

我有一个应用程序处理带有阻塞调用的网络通信。每个线程管理一个连接。在套接字上读取或写入之前,我通过使用select在读取和写入操作上添加了超时。众所周知,Select在处理大量套接字时效率很低。但是,就性能而言,将它与单个套接字一起使用是否可以,或者是否有更有效的方法在单个套接字调用上添加超时支持?select的好处是便携。 最佳答案 是的,这没问题,您确实需要一些超时机制,以免从行为不端的客户端等处泄漏资源。请注意,拥有大量线程比使用select处理大量套接字效率更低。 关于c++-s

c++ - 在 boost::python 中公开 boost::scoped_ptr

我收到一个编译错误,说scoped_ptr的复制构造函数是私有(private)的,代码片段如下:classa{};structs{boost::scoped_ptrp;};BOOST_PYTHON_MODULE(module){class_("s");}虽然这个例子适用于shared_ptr。如果有人知道答案,那就太好了。谢谢 最佳答案 boost::scoped_ptr的语义禁止复制,而shared_ptr旨在被复制。您得到的错误是编译器告诉您某些代码(宏扩展?)正在尝试复制scoped_ptr但库不允许进行复制。